import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores'

// createRouter 创建路由实例
// 配置 history 模式
// 1. history模式：createWebHistory     地址栏不带 #
// 2. hash模式：   createWebHashHistory 地址栏带 #
// console.log(import.meta.env.DEV)

// vite 中的环境变量 import.meta.env.BASE_URL  就是 vite.config.js 中的 base 配置项
const router = createRouter({
  // history: createWebHashHistory(import.meta.env.BASE_URL),
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/login',
      component: () => import('@/views/login/UserLoginView.vue')
    }, // 登录页
    {
      path: '/change',
      component: () => import('@/views/login/UserRegister.vue')
    }, //修改密码页
    {
      path: '/person',
      component: () => import('@/views/user/perSon.vue')
    }, //个人详情页
    {
      path: '/admin',
      component: () => import('@/views/admin/Manger.vue'),
      redirect: '/admin/about',
      children: [
        {
          path: '/admin/about',
          component: () => import('@/views/admin/AboutView.vue')
        },
        {
          path: '/admin/request',
          component: () => import('@/views/admin/RequestView.vue')
        },
        {
          path: '/admin/user',
          component: () => import('@/views/admin/UserView.vue')
        }
      ]
    }, //管理员
    {
      path: '/',
      component: () => import('@/views/MangerView.vue'), //架子提供顶部
      redirect: '/home',
      children: [
        {
          path: '/home', //主页中间部分
          component: () => import('@/views/HomeView.vue') //展示优秀作品
        },
        {
          path: '/project/add',
          component: () => import('@/views/project/AddProject.vue')
        },
        {
          path: '/project/des',
          component: () => import('@/views/project/ProjectDes.vue')
        },
        {
          path: '/project/select',
          component: () => import('@/views/project/SelectView.vue')
        },
        {
          path: '/project/update',
          component: () => import('@/views/project/updateProject.vue')
        }
      ]
    }
  ]
})

// 登录访问拦截 => 默认是直接放行的
// 根据返回值决定，是放行还是拦截
// 返回值：
// 1. undefined / true  直接放行
// 2. false 拦回from的地址页面
// 3. 具体路径 或 路径对象  拦截到对应的地址
//    '/login'   { name: 'login' }
router.beforeEach((to) => {
  // 如果没有token, 且访问的是非登录页，拦截到登录，其他情况正常放行
  const useStore = useUserStore()
  // if (!useStore.token && to.path !== `${import.meta.env.BASE_URL}login`) {
  //   return `${import.meta.env.BASE_URL}login`
  // }
  if (!useStore.token && to.path !== '/login') return '/login'
})

export default router
